// electron/service/CodeService.ts
import { writeFileSync } from 'fs';
import { join } from 'path';

class CodeService {
  // 用于存储每个窗口（或会话）的代码内容，key 为窗口 id
  private codeStorage = new Map<number, string>();

  /**
   * 保存代码到内存缓存
   * @param id 窗口 id
   * @param code 代码内容
   */
  saveCode(id: number, code: string) {
    this.codeStorage.set(id, code);
  }

  /**
   * 获取指定窗口 id 的代码
   * @param id 窗口 id
   * @returns 代码内容或 undefined
   */
  getCode(id: number): string | undefined {
    return this.codeStorage.get(id);
  }

  /**
   * 将指定 id 的代码保存到文件
   * @param id 窗口 id
   * @param filePath 文件路径
   */
  saveCodeToFile(id: number, filePath: string) {
    const code = this.codeStorage.get(id);
    if (!code) throw new Error(`No code found for id ${id}`);
    writeFileSync(filePath, code, { encoding: 'utf-8' });
  }

  /**
   * 清理指定 id 的代码缓存
   * @param id 窗口 id
   */
  dispose(id: number) {
    this.codeStorage.delete(id);
  }
}

export default new CodeService();
